<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------

use think\Config;
////常量，标识缩略图等比例缩放类型
//const THUMB_SCALING   = 1;
////常量，标识缩略图缩放后填充类型
//const THUMB_FILLED    = 2;
////常量，标识缩略图居中裁剪类型
//const THUMB_CENTER    = 3;
////常量，标识缩略图左上角裁剪类型
//const THUMB_NORTHWEST = 4;
////常量，标识缩略图右下角裁剪类型
//const THUMB_SOUTHEAST = 5;
////常量，标识缩略图固定尺寸缩放类型
//const THUMB_FIXED     = 6;

/**
 * 上传图片并生成缩略图
 * 用法：
 * $ret = uploadOne('logo', array(
 * array(600, 600),
 * array(300, 300),
 * array(100, 100),
 * ));
 * 返回值：
 * if($ret['ok'] == 1)
 * {
 * $ret['images'][0];   // 原图地址
 * $ret['images'][1];   // 第一个缩略图地址
 * $ret['images'][2];   // 第二个缩略图地址
 * $ret['images'][3];   // 第三个缩略图地址
 * }
 * else
 * {
 * $this->error = $ret['error'];
 * return FALSE;
 * }
 *
 */
if (!function_exists('uploadOne')) {
    function uploadOne($imgName, $thumb = array())
    {
        // 上传LOGO
        if (isset($_FILES[$imgName]) && $_FILES[$imgName]['error'] == 0)
        {
            $ic = Config::get('image_upload');
            $file = request()->file($imgName);
            // 移动到框架应用根目录/public/uploads/ 目录下
            $info = $file->validate(['size' => $ic['size'], 'ext' => $ic['ext']])->move($ic['rootPath']);
            // 上传文件
            // 上传时指定一个要上传的图片的名称，否则会把表单中所有的图片都处理，之后再想其他图片时就再找不到图片了
            if (!$info) {
                return array(
                    'ok' => 0,
                    'error' => $file->getError(), // 上传失败获取错误信息
                );
            } else {
                //分析路径
                $saveName = $info->getSaveName();
                $savePath = explode(DS, $saveName);
                $savePath = $savePath[0];
                $fileName = $info->getFilename();
                $ret['ok'] = 1;
                $ret['images'][0] = $saveName;
                // 判断是否生成缩略图
                if ($thumb) {
                    $image = \think\Image::open($ic['rootPath'] . DS . $saveName);// 打开要处理的图片
//                        // 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.png
//                        $image->thumb(150,150,\think\Image::THUMB_SCALING)->save('./thumb.png');
                    // 循环生成缩略图
                    foreach ($thumb as $k => $v) {
                        $ret['images'][$k + 1] = $savePath . DS . 'thumb_' . $k . '_' . $fileName;
                        $image->thumb($v[0], $v[1], $ic['thumbType'])->save($ic['rootPath'] . DS . $ret['images'][$k + 1]);
                    }
                }
                return $ret;
            }
        }
        else
        {
            return array(
                'ok' => 2,//没有上传的文件
            );
        }
    }
}

/**
 * 多文件上传
 */
if (!function_exists('uploadMore')) {
    function uploadMore($imgName, $thumb = array())
    {
        $ic = Config::get('image_upload');
        $files = request()->file($imgName);
        if (!empty($files))
        {
            $ret = [];
            foreach($files as $k0=>$file) {
                // 移动到框架应用根目录/public/uploads/ 目录下
                $info = $file->validate(['size' => $ic['size'], 'ext' => $ic['ext']])->move($ic['rootPath']);
                // 上传文件
                // 上传时指定一个要上传的图片的名称，否则会把表单中所有的图片都处理，之后再想其他图片时就再找不到图片了
                if (!$info) {
                    return array(
                        'ok' => 0,
                        'error' => $file->getError(), // 上传失败获取错误信息
                    );
                } else {
                    //分析路径
                    $saveName = $info->getSaveName();
                    $savePath = explode(DS, $saveName);
                    $savePath = $savePath[0];
                    $fileName = $info->getFilename();
                    $ret[$k0]['images'][0] = $saveName;
                    // 判断是否生成缩略图
                    if ($thumb) {
                        $image = \think\Image::open($ic['rootPath'] . DS . $saveName);// 打开要处理的图片
//                        // 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.png
//                        $image->thumb(150,150,\think\Image::THUMB_SCALING)->save('./thumb.png');
                        // 循环生成缩略图
                        foreach ($thumb as $k => $v) {
                            $ret[$k0]['images'][$k + 1] = $savePath . DS . 'thumb_' . $k . '_' . $fileName;
                            $image->thumb($v[0], $v[1], $ic['thumbType'])->save($ic['rootPath'] . DS . $ret[$k0]['images'][$k + 1]);
                        }
                    }
                }
            }
            return $ret;
        }
        else
        {
            return array(
                'ok' => 2,//没有上传的文件
            );
        }
    }
}

/**
 * 显示图片
 */
if (!function_exists('showImage')) {
    function showImage($url, $width = '', $height = '')
    {
        $ic = Config::get('image_upload');
        if ($width)
            $width = "width='$width'";
        if ($height)
            $height = "height='$height'";
        echo "<img $width $height src='{$ic['viewPath']}$url' />";
    }
}

/**
 * 是否上传到七牛云
 */
if (!function_exists('toQiNiu')) {
    function toQiNiu($imagePath)
    {
        $ic = Config::get('image_upload');
        if($ic['toQiNiu'])
        {
            $filePath = $imagePath;
            $key = basename($filePath);
            \app\tools\upload\UploadQN::toUpload($filePath,$key);//使用七牛上传
            return $key;
        }
        return $imagePath;
    }
}

